package Day11;

import java.util.ArrayList;
import java.util.Scanner;
/*
重新coding了一遍学生管理系统
 */
public class Students {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        //建立主菜单
        loop:while(true){
            System.out.println("---------欢迎来到学生管理系统---------");
            System.out.println("1：添加学生");
            System.out.println("2:  删除学生");
            System.out.println("3:  修改学生");
            System.out.println("4： 查询学生");
            System.out.println("5:  退出");
            System.out.println("请输入你的选择");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch(choose){
                case "1":
                    addStudent(list);
                    continue;
                case "2":
                    deleteStudent(list);
                    continue;
                case "3":
                    updateStuent(list);
                    continue;
                case "4":
                    selectStudent(list);
                    continue;
                case "5":
                    System.out.println("退出");
                    break loop;
                default:
                    System.out.println("没有这个选项，请重新输入");
                    continue;
            }
        }
    }


    //写一个添加学生的方法
    public static void addStudent(ArrayList<Student> list){
        Student s = new Student();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入添加的学生的ID");
        String id = null;
        //在添加之前判断是否唯一
        while(true){
            id = sc.next();
            boolean flag = unique(list,id);
            if(flag){
                //ID重复
                System.out.println("ID已经重复，请重新输入");
            }else{
                //ID没有重复
                s.setId(id);
                break;
            }
        }

        System.out.println("请输入学生的姓名");
        String name = sc.next();
        s.setName(name);

        System.out.println("请输入添加的学生的年龄");
        String age = sc.next();
        s.setAge(age);

        System.out.println("请输入学生的家庭住址");
        String address = sc.next();
        s.setAddress(address);

        //将添加好的对象赋给集合
        list.add(s);
    }

    //写一个删除学生的方法
    public static void deleteStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生的ID");
        String id =  sc.next();;
        //判断输入的id是否存在
            int flag = selectIndex(list,id);
            if(flag>= 0){
                list.remove(flag);
                System.out.println("id 已经删除个成功");
            }else{
                System.out.println("学生的信息不存在");

            }
    }

    //写一个修改学生的方法
    public static void updateStuent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        Student s;
        System.out.println("请输入要修改的学生的ID");
        String id = sc.next();
        //判断id是否存在
        int flag = selectIndex(list,id);
        if(flag < 0){
            System.out.println("id不存在");
            return;
        }else{
            s = list.get(flag);

            System.out.println("请输入新的学生的姓名");
            String newName = sc.next();
            s.setName(newName);

            System.out.println("请输入新的学生的年龄");
            String age = sc.next();
            s.setAge(age);

            System.out.println("请输入新的学生的家庭住址");
            String newAddress = sc.next();
            s.setAddress(newAddress);

        }
    }

    //写一个查询学生的方法
    public static void selectStudent(ArrayList<Student> list){
        //定义一个对象来保存集合当中的元素
        System.out.println("ID  姓名  年龄  家庭住址");
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getId() +"   "+stu.getName()+"   "
                    +stu.getAge()+"    "+stu.getAddress());
        }

    }

    //查看学生的ID是否唯一
    public static boolean unique(ArrayList<Student> list, String id){
        //Student s = new Student();
        for (int i = 0; i < list.size(); i++) {
          Student s = list.get(i);
           String sid = s.getId();
           //遍历来查看是否有重合，若有则返回true
            if(sid.equals(id)) {
                return true;
            }
        }
        //没有则返回false
        return false;
    }


    //根据学生的ID来返回索引
    public static int selectIndex(ArrayList<Student> list, String id){
        Student stu  = new Student();
        for (int i = 0; i < list.size(); i++) {
            stu = list.get(i);
            String sid = stu.getId();
            //判断s对象当中的id和输入的ID是否一样
            if(sid.equals(id)){
                //一样则返回i
                return i;
            }
        }
        //如果ID不一样，则返回-1；
        return -1;

    }

}
